/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package th.model;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.CascadeType;

//import org.hibernate.annotations.CascadeType;

/**
 *
 * @author ubuntu
 */

@Entity
@Table(name = "mohon_maklumat")
@NamedQueries({
    @NamedQuery(name = "PermohonanMaklumat.findAll", query = "SELECT p FROM PermohonanMaklumat p")})
public class PermohonanMaklumat implements Serializable {
    private static final long serialVersionUID = 1L;
    
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_mohon_maklumat")
    private Integer idMohonMaklumat;
    
    @Basic(optional = false)
    @Column(name = "no_pengenalan")
    private String noPengenalan;
    
    @Basic(optional = false)
    @Column(name = "no_akaun")
    private String noAkaun;
    
    @Column(name = "nama")
    private String nama;
    
    @Column(name = "alamat1")
    private String alamat1;
    
    @Column(name = "alamat2")
    private String alamat2;
    
    @Column(name = "alamat3")
    private String alamat3;
    
    @Column(name = "emel")
    private String emel;
    
    @Column(name = "poskod")
    private String poskod;
    
    @Column(name = "no_pendaftaran")
    private String noPendaftaran;
    
    //new add mahram
    @Column(name = "noKpMahram")
    private String noKpMahram;
    
    @Column(name = "noAkaunMahram")
    private String noAkaunMahram;
    
    @Column(name = "namaMahram")
    private String namaMahram;
    
    @Column(name = "dobMahram")
    private String dobMahram;
    
    @ManyToOne
    @JoinColumn(name = "hubunganMahram")
    private KodHubungan hubunganMahram;

    public KodHubungan getHubunganMahram() {
        return hubunganMahram;
    }

    public void setHubunganMahram(KodHubungan hubunganMahram) {
        this.hubunganMahram = hubunganMahram;
    }
    
    
//    @ManyToOne(fetch = FetchType.EAGER)
    @ManyToOne
    @JoinColumn(name = "kod_negeri")
    private KodNegeri negeri;
    
    @Column(name = "no_tel1")
    private String noTel1;
    
    @Column(name = "no_tel2")
    private String noTel2;
    
    @Column(name = "no_tel3")
    private String noTel3;
    
    @Column(name = "no_fax")
    private String noFax;
    
    @Column(name = "id_kumpulan_asal")
    private String idKumpulanAsal;
    
    @ManyToOne
    @JoinColumn(name = "tempat_lahir")
    private KodBandar tempatLahir;
    
//    @ManyToOne(fetch = FetchType.EAGER)
    @ManyToOne
    @JoinColumn(name = "kod_pekerjaan")
    private KodPekerjaan pekerjaan;
    
//    @ManyToOne(fetch = FetchType.EAGER)
    @ManyToOne
    @JoinColumn(name = "kod_perkahwinan")
    private KodKahwin perkahwinan;
    
//    @ManyToOne(fetch = FetchType.EAGER)
    @ManyToOne
    @JoinColumn(name = "kod_pendidikan")
    private KodTahapPengajian pendidikan;
    
//    @ManyToOne(fetch = FetchType.EAGER)
    @ManyToOne
    @JoinColumn(name = "kod_sektor_pekerjaan")
    private KodSektorPekerjaan sektorPekerjaan;
    
//    @ManyToOne(fetch = FetchType.EAGER)
    @ManyToOne
    @JoinColumn(name = "kod_urusan")
    private KodUrusan urusan;
    
//    @ManyToOne(fetch = FetchType.EAGER)
    @ManyToOne
    @JoinColumn(name = "kod_status")
    private KodStatus status;
    
    @ManyToOne
    @JoinColumn(name = "kod_status_haji")
    private KodStatusHaji statusHaji;
    
//    @ManyToOne(fetch = FetchType.EAGER)
    @ManyToOne
    @JoinColumn(name = "kod_hubungan")
    private KodHubungan hubungan;
    
    @ManyToOne
    @JoinColumn(name = "kod_warganegara")
    private KodWarganegara warganegara;
    
    @Embedded
    private InfoAudit infoAudit;
    
       
    @OneToMany (mappedBy = "permohonan")
    private List<PermohonanMaklumatKeluarga> senaraiMaklumatKeluarga;     
    
    @OneToMany (mappedBy = "permohonan", cascade = CascadeType.ALL)
    private List<PermohonanMaklumatKumpulan> senaraiMaklumatKumpulan;
    
    @OneToMany (mappedBy = "permohonan", cascade = CascadeType.ALL)
    private List<PermohonanMaklumatWaris> senaraiMaklumatWaris; 
    
    @OneToMany (mappedBy = "permohonan", cascade = CascadeType.ALL)
    private List<PilihanDestinasi> senaraiPilihanDestinasi;
       

    public PermohonanMaklumat() {
    }

    public PermohonanMaklumat(Integer idMohonMaklumat) {
        this.idMohonMaklumat = idMohonMaklumat;
    }
   

    public Integer getIdMohonMaklumat() {
        return idMohonMaklumat;
    }

    public void setIdMohonMaklumat(Integer idMohonMaklumat) {
        this.idMohonMaklumat = idMohonMaklumat;
    }

    public String getNoPengenalan() {
        return noPengenalan;
    }

    public void setNoPengenalan(String noPengenalan) {
        this.noPengenalan = noPengenalan;
    }

    public String getNoAkaun() {
        return noAkaun;
    }

    public void setNoAkaun(String noAkaun) {
        this.noAkaun = noAkaun;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public String getAlamat1() {
        return alamat1;
    }

    public void setAlamat1(String alamat1) {
        this.alamat1 = alamat1;
    }

    public String getAlamat2() {
        return alamat2;
    }

    public void setAlamat2(String alamat2) {
        this.alamat2 = alamat2;
    }

    public String getAlamat3() {
        return alamat3;
    }

    public void setAlamat3(String alamat3) {
        this.alamat3 = alamat3;
    }

    public String getEmel() {
        return emel;
    }

    public void setEmel(String emel) {
        this.emel = emel;
    }

    public String getPoskod() {
        return poskod;
    }

    public void setPoskod(String poskod) {
        this.poskod = poskod;
    }

    public KodNegeri getNegeri() {
        return negeri;
    }

    public void setNegeri(KodNegeri negeri) {
        this.negeri = negeri;
    }

    public String getNoTel1() {
        return noTel1;
    }

    public void setNoTel1(String noTel1) {
        this.noTel1 = noTel1;
    }

    public String getNoTel2() {
        return noTel2;
    }

    public void setNoTel2(String noTel2) {
        this.noTel2 = noTel2;
    }

    public String getNoTel3() {
        return noTel3;
    }

    public void setNoTel3(String noTel3) {
        this.noTel3 = noTel3;
    }

    public String getNoFax() {
        return noFax;
    }

    public void setNoFax(String noFax) {
        this.noFax = noFax;
    }

    public KodBandar getTempatLahir() {
        return tempatLahir;
    }

    public void setTempatLahir(KodBandar tempatLahir) {
        this.tempatLahir = tempatLahir;
    }

    public KodPekerjaan getPekerjaan() {
        return pekerjaan;
    }

    public void setPekerjaan(KodPekerjaan pekerjaan) {
        this.pekerjaan = pekerjaan;
    }

    public KodKahwin getPerkahwinan() {
        return perkahwinan;
    }

    public void setPerkahwinan(KodKahwin perkahwinan) {
        this.perkahwinan = perkahwinan;
    }

    public KodTahapPengajian getPendidikan() {
        return pendidikan;
    }

    public void setPendidikan(KodTahapPengajian pendidikan) {
        this.pendidikan = pendidikan;
    }

    public KodSektorPekerjaan getSektorPekerjaan() {
        return sektorPekerjaan;
    }

    public void setSektorPekerjaan(KodSektorPekerjaan sektorPekerjaan) {
        this.sektorPekerjaan = sektorPekerjaan;
    }

    
    public InfoAudit getInfoAudit() {
        return infoAudit;
    }

    public void setInfoAudit(InfoAudit infoAudit) {
        this.infoAudit = infoAudit;
    }

    public List<PermohonanMaklumatKeluarga> getSenaraiMaklumatKeluarga() {
        return senaraiMaklumatKeluarga;
    }

    public void setSenaraiMaklumatKeluarga(List<PermohonanMaklumatKeluarga> senaraiMaklumatKeluarga) {
        this.senaraiMaklumatKeluarga = senaraiMaklumatKeluarga;
    }

    public List<PermohonanMaklumatKumpulan> getSenaraiMaklumatKumpulan() {
        return senaraiMaklumatKumpulan;
    }

    public void setSenaraiMaklumatKumpulan(List<PermohonanMaklumatKumpulan> senaraiMaklumatKumpulan) {
        this.senaraiMaklumatKumpulan = senaraiMaklumatKumpulan;
    } 

    public List<PermohonanMaklumatWaris> getSenaraiMaklumatWaris() {
        return senaraiMaklumatWaris;
    }

    public void setSenaraiMaklumatWaris(List<PermohonanMaklumatWaris> senaraiMaklumatWaris) {
        this.senaraiMaklumatWaris = senaraiMaklumatWaris;
    }

    public List<PilihanDestinasi> getSenaraiPilihanDestinasi() {
        return senaraiPilihanDestinasi;
    }

    public void setSenaraiPilihanDestinasi(List<PilihanDestinasi> senaraiPilihanDestinasi) {
        this.senaraiPilihanDestinasi = senaraiPilihanDestinasi;
    }

    public KodUrusan getUrusan() {
        return urusan;
    }

    public void setUrusan(KodUrusan urusan) {
        this.urusan = urusan;
    }

    public KodStatus getStatus() {
        return status;
    }

    public void setStatus(KodStatus status) {
        this.status = status;
    }

    public KodStatusHaji getStatusHaji() {
        return statusHaji;
    }

    public void setStatusHaji(KodStatusHaji statusHaji) {
        this.statusHaji = statusHaji;
    }
    
    public KodHubungan getHubungan() {
        return hubungan;
    }

    public void setHubungan(KodHubungan hubungan) {
        this.hubungan = hubungan;
    } 

    public KodWarganegara getWarganegara() {
        return warganegara;
    }

    public void setWarganegara(KodWarganegara warganegara) {
        this.warganegara = warganegara;
    }
    
     public void setNoAkaunMahram(String noAkaunMahram) {
        this.noAkaunMahram = noAkaunMahram;
    }

    public void setNamaMahram(String namaMahram) {
        this.namaMahram = namaMahram;
    }

    public void setDobMahram(String dobMahram) {
        this.dobMahram = dobMahram;
    }

    public String getNoAkaunMahram() {
        return noAkaunMahram;
    }

    public String getNamaMahram() {
        return namaMahram;
    }

    public String getDobMahram() {
        return dobMahram;
    }
    
    public void setNoKpMahram(String noKpMahram) {
        this.noKpMahram = noKpMahram;
    }

    public String getNoKpMahram() {
        return noKpMahram;
    }
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idMohonMaklumat != null ? idMohonMaklumat.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof PermohonanMaklumat)) {
            return false;
        }
        PermohonanMaklumat other = (PermohonanMaklumat) object;
        if ((this.idMohonMaklumat == null && other.idMohonMaklumat != null) || (this.idMohonMaklumat != null && !this.idMohonMaklumat.equals(other.idMohonMaklumat))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "th.model.PermohonanMaklumat[ idMohonMaklumat=" + idMohonMaklumat + " ]";
    }

//    public String getRegistrationSts() {
//        return registrationSts;
//    }
//
//    public void setRegistrationSts(String registrationSts) {
//        this.registrationSts = registrationSts;
//    }

    public String getIdKumpulanAsal() {
        return idKumpulanAsal;
    }

    public void setIdKumpulanAsal(String idKumpulanAsal) {
        this.idKumpulanAsal = idKumpulanAsal;
    }

    public String getNoPendaftaran() {
        return noPendaftaran;
    }

    public void setNoPendaftaran(String noPendaftaran) {
        this.noPendaftaran = noPendaftaran;
    }    
    
}
